home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 / Ham Radio 2000.iso / ham2000 / antenna / yagiu112 / copym.c < prev    next >
C/C++ Source or Header  |  1995-08-07  |  1KB  |  59 lines

  1. #include <errno.h>
  2. #include "yagi.h"
  3.  
  4. extern int errno;
  5.  
  6. void copy_matrix(int length, int width, double **to, double **from) 
  7. {
  8.     int i,j;
  9.     for(i=1;i<=length;++i)
  10.     {
  11.         for(j=1;j<=width;++j)
  12.         {
  13.             to[i][j]=from[i][j];
  14.         }
  15.     }
  16.  
  17. #ifdef DEBUG
  18.     if(errno)
  19.     {
  20.         fprintf(stderr,"Errno =%d in copy_matrix() of copym.c\n", errno);
  21.         exit(1);
  22.     }
  23. #endif
  24. }
  25.  
  26. /* The following functions copies data from a matrix z containing real and
  27. imaqginary data to a much larger real matrix A, so that simultaneouis
  28. equations can be solved by the method in 'Numerical Recipes in C' 
  29.  
  30.         put the data in the form:
  31.     
  32.         |Zr -Zi|   |Ir|   = |Vr|   which we will call A.x=b
  33.         |Zi  Zr|   |Ii|     |Vi| 
  34.         
  35.         so the Z data goes now in a 2Nx2N matrix. This is a bit wasteful of space
  36.         and time, but it will do here. */
  37.  
  38. void copy_complex_data_to_real_matrix(int elements, double **z, double **A)
  39. {
  40.         int i, j;
  41.         for(i=1;i<=elements;++i)
  42.         {
  43.             for(j=1;j<=elements;++j)
  44.             {
  45.                 A[i][j]=z[i][2*j-1];   /* real data, top left corner of Z */
  46.                 A[i+elements][j+elements]=z[i][2*j-1]; /* Bot right, real data */
  47.                 A[i][j+elements]=-z[i][2*j]; /* imaginary, top right */
  48.                 A[i+elements][j]=z[i][2*j]; /* bottom left, imaginary */
  49.             }
  50.         }
  51. #ifdef DEBUG
  52.     if(errno)
  53.     {
  54.         fprintf(stderr,"Errno =%d in copy_complex_data_to_real_m() of copym.c\n", errno);
  55.         exit(1);
  56.     }
  57. #endif
  58. }
  59.